perm filename GRAPH.NEW[PNT,HE] blob sn#492457 filedate 1980-01-23 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	PROCEDURE TO GRAPH ARRAYS OF FORCE DATA
C00004 00003	⊃ PROCEDURE TO GRAPH ARRAYS OF FORCE SENSOR DATA
C00008 ENDMK
C⊗;
COMMENT PROCEDURE TO GRAPH ARRAYS OF FORCE DATA;
ENTRY;
BEGIN "GRAPH"

DEFINE ⊃="COMMENT ",CRLF="('15&'12)";

PRELOAD_WITH "FX","FY","FZ","MX","MY","MZ","T1","T2","T3","T4","T5","T6";
STRING ARRAY  CTLCHR[1:12];
PRELOAD_WITH 1,2,4,8,16,32,64,128,256,512,1024,2048;
INTEGER ARRAY CTLMASK[1:12];
PRELOAD_WITH "OZ","OZ","OZ","OZ-IN","OZ-IN","OZ-IN",
	     "OZ-IN","OZ-IN","OZ","OZ-IN","OZ-IN","OZ-IN";
STRING ARRAY YLAB[1:12];
INTEGER HEAD,FUNCT;

PROCEDURE INITG;
BEGIN
SETBREAK(HEAD←GETBREAK,"ABCDEFGHIJKLMNOPQRSTUVWXYZ?"&'12&'15,NULL,"IRN");
SETBREAK(FUNCT←GETBREAK,"ABCDEFGHIJKLMNOPQRSTUVWXYZ?0123456789",NULL,"XNR");
END;

REQUIRE INITG INITIALIZATION;
REQUIRE "DPYSUB.HDR[SUB,SYS]" SOURCE_FILE;

⊃ PROCEDURE TO GRAPH ARRAYS OF FORCE SENSOR DATA;

INTERNAL PROCEDURE GRAPH(REAL ARRAY RDATA; INTEGER CTL,NPTS,SIZE);

BEGIN "GPROC"
INTEGER I,J,K,NCPN,OFFSET,LASTRDAT,POG,DD,III,DUM;
BOOLEAN FIRSTTIME;
BOOLEAN ARRAY GOT[1:12];
INTEGER ARRAY DATA[1:12,1:SIZE];
INTEGER ARRAY DARRAY[1:SIZE];
INTEGER ARRAY DISPLY[1:'3000];
STRING ANS,COM2;
STRING DISCM,DANS;
LABEL DEND;

INTEGER WID,DIG;	⊃ save format parameters ;
GETFORMAT(WID,DIG);
SETFORMAT(0,0);
⊃ DETERMINE WHICH DATA WAS COLLECTED;
NCPN←0;
FOR I← 1 STEP 1 UNTIL 12 DO
	IF CTL LAND CTLMASK[I] THEN
		BEGIN
		NCPN←NCPN+1;
		GOT[I]←TRUE;
		OUTSTR(CTLCHR[I]&" COLLECTED"&CRLF);
		END
	ELSE GOT[I]←FALSE;
LASTRDAT←NCPN+NPTS;

⊃ STORE RAW DATA INTO SEPARATE ARRAYS;
OFFSET←1;
FOR I←1 STEP 1 UNTIL 12 DO
	IF GOT[I] THEN
		BEGIN
		K←OFFSET;
		FOR J←1 STEP 1 UNTIL NPTS DO BEGIN
			DATA[I,J]←RDATA[K];
			K←K+NCPN;END;
		OFFSET←OFFSET+1;
		END;
FIRSTTIME←TRUE;
OUTSTR("COMPONENT TO GRAPH? (E TO EXIT, P TO PLOT) ");

⊃ DISPLAY LOOP;
WHILE TRUE DO BEGIN "DLOOP"
I←0;
WHILE I=0 DO BEGIN
	LODED(DISCM);
	ANS←INCHWL;
	SCAN(ANS,HEAD,DUM);
	DISCM←SCAN(ANS,FUNCT,DUM);
	IF EQU(DISCM,"E") THEN GOTO DEND;
	IF FIRSTTIME THEN IF DISCM="P" THEN OUTSTR("DISPLAY FIRST")
	ELSE BEGIN
	FOR J←1 STEP 1 UNTIL 12 DO
		IF EQU(DISCM,CTLCHR[J]) THEN
			BEGIN	
			IF GOT[J] THEN I←J;
			DONE;
			END;
	IF I=0 THEN OUTSTR("DATA NOT COLLECTED FOR THAT COMPONENT"&CRLF)
		ELSE FIRSTTIME←FALSE;
	END;
	END;

	IF DISCM≠"P" THEN
	BEGIN
	FOR J←1 STEP 1 UNTIL NPTS DO
		DARRAY[J]←DATA[I,J];

	DPYCLR;
	TYPLOC(-400,-450);
	POG←GETPOG;
	DPYSET(DISPLY);
	COM2←"	DURATION = "&CVS(NPTS/60)&" SECONDS";	
 	ARRGRAF(DARRAY,1,NPTS,-400,-300,800,700,"  SAMPLES"
	,"  "&CTLCHR[I]&" "&YLAB[I],0,0);
	DPYBIG(2);
	AIVECT(-400,430);
	DPYSST(COM2);
	DPYOUT(POG);
	define ttyset = "'047000400121";
	  quick_code
	  hrroi 1,['004000000120]; comment [004000,,"P"];
	  ttyset 1,	;	        ⊃ this last stuff does an esc-P;
	  end;
	END
	ELSE
	BEGIN
	⊃ SAVE PLT FILE ;
		STRING FILNAM;
		INTEGER FLG,CHN;
		CHN←GETCHAN;
		OPEN(CHN,"DSK",8,0,3,0,0,0);
		DO BEGIN
			OUTSTR("PLOT FILE = ");
			FILNAM←INCHWL;
			ENTER(CHN,FILNAM&".PLT",FLG);
		END UNTIL ¬FLG;
		ARRYOUT(CHN,DISPLY[1],DISPLY[2]);
		CLOSE(CHN);
		RELEASE(CHN);
	END;
	END "DLOOP";
	DPYCLR;
DEND: 	SETFORMAT(WID,DIG);
END "GPROC";

END "GRAPH";